//network/request.js文件
import store from '@/store'
import base from './baseUrl.js'
// 这行代码定义了一个空数组loadList，用于存储加载状态标记。
let loadList = []
// 这段代码定义了一个名为Request的类，并且定义了一个名为http的方法，该方法用于发起HTTP请求。接下来的代码都是http方法内部的实现。
console.log(store.state, 'kkkk')
export default class Request {
	http(param) {
		// 请求的参数
		let url = param.url;
		let method = param.method;
		let header = {};
		let data = Object.assign(param.data || {});
		let hideLoading = param.hideLoading || false;
		let whetherData = param.whetherData;
		// 拼接完整的请求地址
		let requestUrl = base.baseUrl + url;
		header = Object.assign({
			'content-type': "application/json",
			token: store.state.token
		}, param.header)
		// 加载圈
		if (!hideLoading) {
			loadList.push(1)
			uni.showLoading({
				mask: true
			})
		}
		// 返回promise
		return new Promise((resolve, reject) => {
			// 请求
			uni.request({
				url: requestUrl,
				data: data,
				method: method,
				header: header,
				success: (res) => {
					// 隐藏加载
					if (!hideLoading) {
						loadList.pop();
						if (loadList.length === 0) uni.hideLoading();
					}
					// 判断 请求是否成功 200
					if (res.statusCode == 200) {
						//判断  接口返回列表中是否存在 data 列表 （因为接口不统一所以从这里判断 promise返回什么数据）
						if (whetherData) {
							// code判断:1成功,不等于200错误 200
							if (res.data.code == 1) {
								resolve(res.data)
								// uni.$u.toast(res.data.msg)
							} else {
								if (res.data.code == 1) {
									console.log(666)
								}
								resolve(res.data)
								uni.$u.toast(res.data.msg)
							}
						} else {
							console.log('不判断', res.data);
							resolve(res.data)
						}
					}
				},
				//请求失败
				fail: (error) => {
					//隐藏加载
					// console.log(error);
					if (!hideLoading) {
						loadList.pop();
						if (loadList.length === 0) uni.hideLoading();
					}
				},
			})
		})
	}
}